/**
 * @Project : algorithm-learning
 * @Author : Ruoyu Wang
 * @User : Momenta
 * @DateTime : 2024/3/17 9:54
 */

//黑塔是一个喜欢转圈圈的女孩子,
//有一天，黑塔遇到了n个怪物，第i个怪物的生命值为h:由于被守护者之影禁用了普通攻击，黑塔现在只能使用E技能攻击敌人。
//具体地说，黑塔每次使用E技能，会对敌方全体造成点伤害。除此之外，每当一个怪物的生命值首次减小到其最大生命值的50%及以下(含50%)时，
//如果敌方尚有怪物存活(生命值大于零)，那么黑塔就会自动释放一次追加攻击“转圈圈”，对敌方全体造成R点伤害。
//如果一次攻击同时使多个敌人满足以上条件，那么黑塔也会连续释放多次“转圈圈”，直到“转圈圈”次数耗尽或者敌人全部倒下为止。
//在“转圈圈”结束之前，黑塔无法再次使用E技能。
//作为天才俱乐部#83的天才，黑塔只用了0.0114514秒就算出了自己需要使用多少次E技能才能。
//她觉得这个问题太简单了，于是击败这些怪物，以及在这个过程中她会释放多少次“转圈圈"将其留给了你作为课后习题。
//
//输入描述
//  第一行一个正整数T，表示有T组数据。
//  对于每一组数据，第一行一个正整数"，表示怪物的数量第二行n个正整数h1,h2...hn,表示每个怪物的生命值；
//  第三行两个正整数E,R，分别表示黑塔E技能的伤害和“转圈圈”的伤害。
//输出描述
//  每组数据会输出一行两个整数cntE和cntR，分别表示黑塔击败所有怪物使用e技能和r技能的次数
//
//示例1
//输入
//3
//5
//100 50 60 80 70
//25 10
//5
//100 50 60 80 70
//20 20
//5
//100 200 300 4000 5000
//50 1000
//输出
//2 5
//2 3
//1 5
//说明
//  对于第一组数据:
//  初始怪物生命值为[100,50,60,80,70];
//  黑塔使用E技能，怪物生命值变为[75,25,35,55,45];
//  怪物2生命值小于等于50%，触发一次转圈圈，怪物生命值变为[65,15,25,45,35];
//  怪物3,5生命值小于等于50%，触发两次转圈圈，生命值变为[45,0,5,25,15];
//  怪物1,4触发两次转圈圈，生命值变为[25,0,0,5,0];
//  使用E技能，生命值变为[0,0,0,0,0]，战斗结束，一共使用2次E，5次转圈圈.
//  对于第二组数据:
//  初始怪物生命值为[100,50,60,80,70];
//  黑塔使用E技能，怪物生命值变为[80,30,40,60,50];
//  再次使用E,生命值变为[60,10,20,40,30];
//  怪物2,3,4,5触发四次转圈圈，但是只转3次所有怪物就全部被击杀，因此一共使用2次E，3次转圈圈。
//  对于第三组数据:
//  初始生命值为[100,200,300,4000,5000]
//  使用E技能，[50,150,250,3950,4950]
//  怪物1触发一次转圈圈，[0,0.0,2950,3950]
//  怪物2，3触发两次转圈圈，[0,0,0,950,1950]
//  怪物4，5触发两次转圈圈，[0,0,0,0,0]，战斗结束，一共使用1次E，5次转圈圈。


#include <iostream>

using namespace std;

void attack(int numtmp[], int k, int e, int r, int &a, int &b) {
    int num[k];
    for (int i = 0; i < k; i++) {
        num[i] = numtmp[i];
    }
    bool st[k];
    for (int i = 0; i < k; ++i) {
        st[i] = false;
    }
    int die = 0;
    while (die < k) {
        // 发动一次e
        for (int i = 0; i < k; i++) {
            if (num[i] > 0) {
                num[i] -= e;
                if (num[i] <= 0) die++;
            }
        }
        a++;

        // 发动n次转圈圈
        int tmp = 0;
        for (int i = 0; i < k; i++) {
            if (!st[i] && num[i] <= numtmp[i] / 2.0) {
                tmp = 1;
                st[i] = true;
                break;
            }
        }
        while (tmp != 0) {
            for (int i = 0; i < k; i++) {
                if (num[i] > 0) {
                    num[i] -= r;
                    if (num[i] <= 0) die++;
                }
            }
            b += 1;
            if (die == k) break;
            tmp = 0;
            for (int i = 0; i < k; i++) {
                if (!st[i] && num[i] <= numtmp[i] / 2.0) {
                    tmp = 1;
                    st[i] = true;
                    break;
                }
            }
        }
    }
}

int main() {
    int n;
    scanf("%d", &n);
    while (n--) {
        int k, e, r;
        scanf("%d", &k);
        int num[k];
        for (int i = 0; i < k; i++) {
            scanf("%d", &num[i]);
        }
        scanf("%d%d", &e, &r);
        int a = 0;
        int b = 0;
        attack(num, k, e, r, a, b);
        printf("%d %d\n", a, b);
    }
}
